package com.azt.api.service;

import java.util.List;
import java.util.Map;

import com.azt.api.pojo.PrizeSet;
import com.azt.api.pojo.User;
import com.azt.model.page.Pagination;
import org.omg.CORBA.INTERNAL;

public interface PrizeSetService {
	
	public Pagination selectSetList(int pageno, int pagesize,Map<String, String> params);
    /** 
     * @Title: saveOrUpdate 
     * @Description: 更新或保存
     * @param ps
     * @return: void
     * @author: 周冬冬 2017年2月21日 上午11:33:52 
     */
    public void saveOrUpdate(PrizeSet ps);
    public PrizeSet getPrizeSetById(Integer id);
	
	/** 
	 * @Title: luckyDraw 
	 * @Description: 抽奖算法:
	 * 1.奖品为没有过期的
	 * 2.奖品的获奖概率大于0的
	 * 3.奖品必须小于每日获奖的上限
	 * 4.满足上述条件再按数据库设置的概率随机抽奖
	 * @return
	 * @return: PrizeSet
	 * @author: 查恒 2017年2月20日 下午2:31:16 
	 */
	public PrizeSet luckyDraw(User user);
	
	/** 
	 * @Title: getUsablePrize 
	 * @Description: 获取可以进行抽取的奖品
	 * @return
	 * @return: List<PrizeSet>
	 * @author: 查恒 2017年2月20日 下午2:54:37 
	 */
	public List<PrizeSet> getUsablePrize();
	
	public void deleteById(PrizeSet ps);
	
	/** 
	 * @Title: getDesignPrize 
	 * @Description: 获取指定中奖人的奖品
	 * 1.指定的号码
	 * 2.指定中奖时间为当天
	 * 3.奖品未过期
	 * 4.奖品未抽过
	 * 5.指定的奖品数量小于每日最高中奖数量
	 * @param mobile
	 * @param userId
	 * @return
	 * @return: PrizeSet
	 * @author: 查恒 2017年2月24日 下午3:14:10 
	 */
	public PrizeSet getDesignPrize(String mobile,Integer userId);
	
	/** 
	 * @Title: selectPrizeSets 
	 * @Description:查询所有的奖品设置
	 * @param offset 从第几条开始
	 * @param limit  查询条数
	 * @return
	 * @return: List<PrizeSet>
	 * @author: 杨程 2017年3月2日 下午18:01:01 
	 */
	public List<PrizeSet> selectPrizeSets(Integer offset,Integer limit);
	
	/** 
	 * @Title: selectSetList 
	 * @Description:查询所有
	 * @param giftName
	 * @return
	 * @return: List<PrizeSet>
	 * @author: 叶青 2017年3月6日 下午12:43:39 
	 */
	public List<PrizeSet> selectSetList();

	/**
	 * 库存 - 1
	 */
	int updateDecrement(Integer id);
}
